﻿using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Collections;
using Brainsoft.Boxsys;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session.Abandon();
            ListEmpresas();
        }
    }

    void ListEmpresas()
    {
        BoxsysDataContext ctx = new BoxsysDataContext();
        var  LstEmpresa = ctx.Empresas.Where<Empresa>(q => q.empEstado== 1).OrderBy(q=> q.empNombre);
        selEmpresa.DataSource = LstEmpresa;
        selEmpresa.DataBind();
    }
    protected void btnEntrar_Click(object sender, EventArgs e)
    {
     

        BoxSesion Box = new BoxSesion();
        string Rut = string.Empty;
        Rut = txtLogin.Text;
        Rut = Rut.Replace(".", "");
        Rut = Rut.Replace("-", "");
        Box = InicioSesion(Rut, txtClave.Text, Convert.ToInt32(selEmpresa.SelectedValue));
        switch (Box.ResLogin)
        {
            case 1:
                Box.IDEmpresa = Convert.ToInt32(selEmpresa.SelectedValue);
                Session["Box"] = Box;
                Response.Redirect("main.aspx");
                break;
            default:
                lblMsg.Text = "No se pudo iniciar sesión porque los datos son incorrectos.";
                break;
        }

    }

    #region InicioSesion
    BoxSesion InicioSesion(string  Rut,string Clave,int IdEmpresa)
    {
            BoxSesion Box = new BoxSesion();
            BoxsysDataContext ctx = new BoxsysDataContext();
        
        try
        {
            var result = ctx.spBOXusuIniciaSesion(Rut, Clave, IdEmpresa).First();
            if (result!=null )
            {
               
                    Box.ResLogin = 1;
                    Box.Login = Rut;
                    Box.Clave = Clave;
                    Box.Nombre = result.usuNombreCompleto;
                    Box.Tipo = result.usuTipo;
                    Box.IDMoneda = result.monID;
                    Box.MonedaDecimales = result.monDecimales;
                    Box.AprobadorSol = result.aprobadorSol > 0;
                    Box.AprobadorRen = result.aprobadorRen > 0;
                    Box.IDUsuario = result.usuID;
                    Box.NombreEmpresa = result.empNombre;
                    Box.NombreMoneda = result.monNombre;
                    Box.Estado = result.usuEstado;
                    Box.Contador = result.usuContador;
                    Box.ResponsableFondo = result.RespFondo > 0;
                
                //CARGOS
                var rescargo = ctx.spBOXusuListaCargosAsoc(Box.IDUsuario);
                Box.Cargos = new ArrayList();
                foreach (var i in rescargo)
                {
                    Cargo cargo = ctx.Cargos.Where<Cargo>(q => q.carID == i.carID).First();
                    Box.Cargos.Add(cargo);
                }

                //CENTROS DE COSTOS
                var rescen = ctx.spBOXusuListaCentrosCostoAsoc(Box.IDUsuario);
                Box.CentrosCosto = new ArrayList();
                foreach (var i in rescen)
                {
                    CentroCosto cen = ctx.CentroCostos.Where<CentroCosto>(q => q.cenID == i.cenID).First();
                    Box.CentrosCosto.Add(cen);
                }

                //ACCESOS
                var resacc = ctx.spBOXaccListaAccesos(Box.IDUsuario);
                Box.Accesos = new ArrayList();
                foreach (var i in resacc)
                {
                    Box.Accesos.Add(i.accID);
                }


            }
            else
            {
                Box.ResLogin = -1;
            }
        }
        catch (Exception ex)
        {
            Box.ResLogin = -2;
        }
        return Box;
    }
    #endregion
}

